home *** CD-ROM | disk | FTP | other *** search
/ ShareWare OnLine 2 / ShareWare OnLine Volume 2 (CMS Software)(1993).iso / prog / asmlib35.zip / ASM3DEMO.ZIP / MWDEMO.ASM < prev    next >
Assembly Source File  |  1993-01-22  |  2KB  |  118 lines

  1. ; MWDEMO.ASM for ASMDEMO - Copyright (C) 1993 Douglas Herr
  2. ;  all rights reserved
  3.  
  4. include    asm.inc
  5.  
  6. public    mwdemo
  7. extrn    mwinit:proc, mwdisplay:proc, mwunhide:proc
  8. extrn    mwopen:proc, mwclose:proc, mwcloseall:proc
  9. extrn    mwfill:proc, mwclear:proc, mwborder:proc
  10. extrn    mwprint:proc, mwselect:proc, mwtop:proc
  11. extrn    getkey:proc, ucursoron:proc, cursoroff:proc
  12. extrn    tprintce:proc
  13.  
  14. .data
  15. initseg    dw 0
  16. mwh    dw 10 dup(0)        ; storage for 10 handles
  17. r0    dw 1,1,15,20
  18. color    db 4
  19. wtext    db 'Window #'
  20. wnumber    db '0',0
  21. position    label word
  22. column    db 1
  23. row    db 1
  24. prompt    db 'Move cursor with keyboard & press ENTER to select window',0
  25.  
  26. .code
  27. mwdemo    proc
  28.     mov    color,4
  29.     mov    wnumber,'0'
  30.     mov    position,0101h
  31.  
  32.     call    mwinit
  33.     mov    al,101b        ; enable shadow & unhide for all
  34.     mov    initseg,ax    ; save segment address of screen buffers
  35.     xor    di,di
  36.     mov    cx,10
  37. m0:    lea    bx,r0
  38.     call    mwopen
  39.     mov    mwh[di],ax
  40.     mov    bx,ax
  41.     mov    ah,color
  42.     mov    al,0
  43.     call    mwborder
  44.     call    mwfill
  45.     lea    si,wtext
  46.     xor    dx,dx
  47.     call    mwprint
  48.     call    mwunhide
  49.     inc    r0
  50.     add    r0+2,2
  51.     inc    r0+4
  52.     add    r0+6,2
  53.     inc    color
  54.     inc    wnumber
  55.     loop    m0
  56.  
  57. m1:    call    mwdisplay
  58.     lea    si,prompt
  59.     xor    dx,dx
  60.     mov    ah,15
  61.     call    tprintce
  62. m1a:    mov    dx,position
  63.     call    ucursoron
  64. m2:    call    getkey
  65.     cmp    ax,27        ; Esc?
  66.     je    exit        ;  exit if so
  67.     cmp    ax,13        ; Enter?
  68.     je    select
  69.     shr    ah,1        ; extended keycode?
  70.     jnc    m2        ;  no, get next key
  71.     cmp    al,72
  72.     je    up
  73.     cmp    al,75
  74.     je    left
  75.     cmp    al,77
  76.     je    right
  77.     cmp    al,80
  78.     je    down
  79.     jmp    m2
  80. select:    mov    dx,position
  81.     call    mwselect
  82.     jc    m2
  83.     call    mwtop
  84.     jmp    m1
  85.  
  86. up:    sub    row,1
  87.     adc    row,0
  88.     jmp    m1a
  89. left:    sub    column,1
  90.     adc    column,0
  91.     jmp    m1a
  92. right:    inc    column
  93.     jmp    m1a
  94. down:    inc    row
  95.     jmp    m1a
  96.  
  97. exit:    call    mwcloseall
  98.     call    mwdisplay
  99.  
  100. ; restore initial window coordinates
  101.     mov    ax,1
  102.     mov    r0,ax
  103.     mov    r0+2,ax
  104.     mov    r0+4,15
  105.     mov    r0+6,20
  106.  
  107. ; release the screen buffers
  108.     mov    es,initseg
  109.     mov    ah,49h
  110.     int    21h
  111.  
  112. ; hide the cursor
  113.     call    cursoroff
  114.  
  115.     ret
  116. mwdemo    endp
  117.     end
  118.